<?php
class aventurepasapas_controller extends Controller
{
	public function aventurepasapas_controller()
	{
		parent::controller();

		$this->addCSSFile("init");
		$this->addJSFile("init");

		//$this->setTitle("Mat&Co : d'un océan à l'autre");
	}

	// Affiche les derniers articles
	public function init()
	{

		//Gestion des privilèges utilisateur (articles privés/publics)
		$this->_isUserConnected = false;
		if (isset($_SESSION['connexion'])) {
			$this->_isUserConnected = true;
		}

		//Gestion des articles
		$this->_view->_listeCat = $this->addPartialView('aventurepasapas','showCat');
		$this->_view->_listeArt = $this->addPartialView('aventurepasapas','filterByCat');

	}

	// Affiche les catégories
	public function showCat()
	{
		$cats = new Categorie_Collection();

		//Selection de la liste des catégories selon les privilèges de l'utilisateur (invité ou membre)
		/*if(!isset($_SESSION['connexion'])) {     // Invité = Catégories publics visibles
			$cats_list = $cats->liste(
			array("isPublic" => 1)
			);
			}elseif(isset($_SESSION['connexion'])) {*/ // Membre => Toutes les catégories sont accessibles
		//	$cats_list = $cats->liste();
		//}

		//Récupère la liste des catégories
		$cats_list = $cats->liste();

		// uasort permet de trier un tableau sur ces valeur (uksort pour les clés) avec un callback perso
		// Ici, le callback étant une méthode d'objet, on passe un tableau avec l'objet instancié et le nom de la méthode
		uasort($cats_list, array($this, "cat_sort") );
		$this->_view->catlist = $cats_list;
	}

	// Callback de tri - prend en compte la langue
	private function cat_sort($a, $b)
	{
		return strcmp($a->get_name(), $b->get_name() );
	}

	// Affiche les articles d'une catégorie donnnée
	public function filterByCat()
	{
		$this->disableLayout();

		// Récupération des paramètres
		$catID = isset($_GET["id"]) ? $_GET["id"] : null;
		$page = isset($_GET["p"]) ? $_GET["p"] : 0;
		$page = ($page != 0) ? $page : 1;
		$this->_view->_activePage = $page;
		$this->_view->_activeCat = $catID;

		$arts = new Article_Collection();

		// On filtre par une catégorie
		if($catID != null)
		{
			$this->_view->artlist = $arts->liste(
			array(
					"isPublished" => 1,
					"categorieId" => $catID
			),
			array("creation_date" => "desc"),
			10,
			($page-1)*10
			);

			// Récupération du nom de la catégorie
			$cats = new Categorie_Collection();
			$cat = $cats->getById($catID);
			if($cat != null)
			$this->_view->_catName = Lang::TRANSLATE("cont_init_cat_last_articles").' "'.$cat->get_name().'"';

			// Récupération du nombre de page
			$this->_view->_nb = $arts->getNbArticle($catID);
		}
		// On est sur l'action init et on appelle cette vue partielle
		else
		{
			// Récupération du nombre total d'articles
			$this->_view->_nb = $arts->getNbArticle();

			//Selection de la liste des articles selon les privilèges de l'utilisateur (invité ou membre)
			/*if(!isset($_SESSION['connexion'])) {     // Invité = Articles publics visibles
				$this->_view->artlist = $arts->getPublicArticles();
				}elseif(isset($_SESSION['connexion'])) { // Membres = Tous les articles sont visibles
				$this->_view->artlist = $arts->liste(
				array("isPublished" => 1),
				array("creation_date" => "desc"),
				10,
				($page-1)*10
				);
				}*/

			//Récupère la liste des articles
			$this->_view->artlist = $arts->liste(
			array("isPublished" => 1),
			array("creation_date" => "desc"),
			10,
			($page-1)*10
			);

			$this->_view->_catName = Lang::TRANSLATE("cont_init_last_articles");
		}

	}
};
return new aventurepasapas_controller();
?>